1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.glib.ghash;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.glist;
34 
35 extern (C):
36 
37 alias _GHashTable GHashTable;
38 alias int function (void*, void*, void*) GHRFunc;
39 alias _GHashTableIter GHashTableIter;
40 
41 struct _GHashTableIter
42 {
43 	gpointer dummy1;
44 	gpointer dummy2;
45 	gpointer dummy3;
46 	int dummy4;
47 	gboolean dummy5;
48 	gpointer dummy6;
49 }
50 
51 struct _GHashTable;
52 
53 version(Derelict_Link_Static)
54 {
55     extern( C ) nothrow 
56     {
57         GHashTable* g_hash_table_new(GHashFunc hash_func, GEqualFunc key_equal_func);
58         GHashTable* g_hash_table_new_full(GHashFunc hash_func, GEqualFunc key_equal_func, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func);
59         void g_hash_table_destroy(GHashTable* hash_table);
60         void g_hash_table_insert(GHashTable* hash_table, gpointer key, gpointer value);
61         void g_hash_table_replace(GHashTable* hash_table, gpointer key, gpointer value);
62         void g_hash_table_add(GHashTable* hash_table, gpointer key);
63         gboolean g_hash_table_remove(GHashTable* hash_table, gconstpointer key);
64         void g_hash_table_remove_all(GHashTable* hash_table);
65         gboolean g_hash_table_steal(GHashTable* hash_table, gconstpointer key);
66         void g_hash_table_steal_all(GHashTable* hash_table);
67         gpointer g_hash_table_lookup(GHashTable* hash_table, gconstpointer key);
68         gboolean g_hash_table_contains(GHashTable* hash_table, gconstpointer key);
69         gboolean g_hash_table_lookup_extended(GHashTable* hash_table, gconstpointer lookup_key, gpointer* orig_key, gpointer* value);
70         void g_hash_table_foreach(GHashTable* hash_table, GHFunc func, gpointer user_data);
71         gpointer g_hash_table_find(GHashTable* hash_table, GHRFunc predicate, gpointer user_data);
72         guint g_hash_table_foreach_remove(GHashTable* hash_table, GHRFunc func, gpointer user_data);
73         guint g_hash_table_foreach_steal(GHashTable* hash_table, GHRFunc func, gpointer user_data);
74         guint g_hash_table_size(GHashTable* hash_table);
75         GList* g_hash_table_get_keys(GHashTable* hash_table);
76         GList* g_hash_table_get_values(GHashTable* hash_table);
77         void g_hash_table_iter_init(GHashTableIter* iter, GHashTable* hash_table);
78         gboolean g_hash_table_iter_next(GHashTableIter* iter, gpointer* key, gpointer* value);
79         GHashTable* g_hash_table_iter_get_hash_table(GHashTableIter* iter);
80         void g_hash_table_iter_remove(GHashTableIter* iter);
81         void g_hash_table_iter_replace(GHashTableIter* iter, gpointer value);
82         void g_hash_table_iter_steal(GHashTableIter* iter);
83         GHashTable* g_hash_table_ref(GHashTable* hash_table);
84         void g_hash_table_unref(GHashTable* hash_table);
85         gboolean g_str_equal(gconstpointer v1, gconstpointer v2);
86         guint g_str_hash(gconstpointer v);
87         gboolean g_int_equal(gconstpointer v1, gconstpointer v2);
88         guint g_int_hash(gconstpointer v);
89         gboolean g_int64_equal(gconstpointer v1, gconstpointer v2);
90         guint g_int64_hash(gconstpointer v);
91         gboolean g_double_equal(gconstpointer v1, gconstpointer v2);
92         guint g_double_hash(gconstpointer v);
93         guint g_direct_hash(gconstpointer v);
94         gboolean g_direct_equal(gconstpointer v1, gconstpointer v2);
95     }
96 }
97 else
98 {
99     extern( C ) nothrow 
100     {
101         alias da_g_hash_table_new = GHashTable* function(GHashFunc hash_func, GEqualFunc key_equal_func);																							
102         alias da_g_hash_table_new_full = GHashTable* function(GHashFunc hash_func, GEqualFunc key_equal_func, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func);					
103         alias da_g_hash_table_destroy = void function(GHashTable* hash_table);																														
104         alias da_g_hash_table_insert = void function(GHashTable* hash_table, gpointer key, gpointer value);																							
105         alias da_g_hash_table_replace = void function(GHashTable* hash_table, gpointer key, gpointer value);																						
106         alias da_g_hash_table_add = void function(GHashTable* hash_table, gpointer key);																											
107         alias da_g_hash_table_remove = gboolean function(GHashTable* hash_table, gconstpointer key);																								
108         alias da_g_hash_table_remove_all = void function(GHashTable* hash_table);																													
109         alias da_g_hash_table_steal = gboolean function(GHashTable* hash_table, gconstpointer key);																									
110         alias da_g_hash_table_steal_all = void function(GHashTable* hash_table);																													
111         alias da_g_hash_table_lookup = gpointer function(GHashTable* hash_table, gconstpointer key);																								
112         alias da_g_hash_table_contains = gboolean function(GHashTable* hash_table, gconstpointer key);																								
113         alias da_g_hash_table_lookup_extended = gboolean function(GHashTable* hash_table, gconstpointer lookup_key, gpointer* orig_key, gpointer* value);											
114         alias da_g_hash_table_foreach = void function(GHashTable* hash_table, GHFunc func, gpointer user_data);																						
115         alias da_g_hash_table_find = gpointer function(GHashTable* hash_table, GHRFunc predicate, gpointer user_data);																				
116         alias da_g_hash_table_foreach_remove = guint function(GHashTable* hash_table, GHRFunc func, gpointer user_data);																			
117         alias da_g_hash_table_foreach_steal = guint function(GHashTable* hash_table, GHRFunc func, gpointer user_data);																				
118         alias da_g_hash_table_size = guint function(GHashTable* hash_table);																														
119         alias da_g_hash_table_get_keys = GList* function(GHashTable* hash_table);																													
120         alias da_g_hash_table_get_values = GList* function(GHashTable* hash_table);																													
121         alias da_g_hash_table_iter_init = void function(GHashTableIter* iter, GHashTable* hash_table);																								
122         alias da_g_hash_table_iter_next = gboolean function(GHashTableIter* iter, gpointer* key, gpointer* value);																					
123         alias da_g_hash_table_iter_get_hash_table = GHashTable* function(GHashTableIter* iter);																										
124         alias da_g_hash_table_iter_remove = void function(GHashTableIter* iter);																													
125         alias da_g_hash_table_iter_replace = void function(GHashTableIter* iter, gpointer value);																									
126         alias da_g_hash_table_iter_steal = void function(GHashTableIter* iter);																														
127         alias da_g_hash_table_ref = GHashTable* function(GHashTable* hash_table);																													
128         alias da_g_hash_table_unref = void function(GHashTable* hash_table);																														
129         alias da_g_str_equal = gboolean function(gconstpointer v1, gconstpointer v2);																												
130         alias da_g_str_hash = guint function(gconstpointer v);																																		
131         alias da_g_int_equal = gboolean function(gconstpointer v1, gconstpointer v2);																												
132         alias da_g_int_hash = guint function(gconstpointer v);																																		
133         alias da_g_int64_equal = gboolean function(gconstpointer v1, gconstpointer v2);																												
134         alias da_g_int64_hash = guint function(gconstpointer v);																																	
135         alias da_g_double_equal = gboolean function(gconstpointer v1, gconstpointer v2);																											
136         alias da_g_double_hash = guint function(gconstpointer v);																																	
137         alias da_g_direct_hash = guint function(gconstpointer v);																																	
138         alias da_g_direct_equal = gboolean function(gconstpointer v1, gconstpointer v2);																											
139     }
140 
141     __gshared
142     {
143         da_g_hash_table_new g_hash_table_new; 
144         da_g_hash_table_new_full g_hash_table_new_full; 
145         da_g_hash_table_destroy g_hash_table_destroy; 
146         da_g_hash_table_insert g_hash_table_insert; 
147         da_g_hash_table_replace g_hash_table_replace; 
148         da_g_hash_table_add g_hash_table_add; 
149         da_g_hash_table_remove g_hash_table_remove; 
150         da_g_hash_table_remove_all g_hash_table_remove_all; 
151         da_g_hash_table_steal g_hash_table_steal; 
152         da_g_hash_table_steal_all g_hash_table_steal_all; 
153         da_g_hash_table_lookup g_hash_table_lookup; 
154         da_g_hash_table_contains g_hash_table_contains; 
155         da_g_hash_table_lookup_extended g_hash_table_lookup_extended; 
156         da_g_hash_table_foreach g_hash_table_foreach; 
157         da_g_hash_table_find g_hash_table_find; 
158         da_g_hash_table_foreach_remove g_hash_table_foreach_remove; 
159         da_g_hash_table_foreach_steal g_hash_table_foreach_steal; 
160         da_g_hash_table_size g_hash_table_size; 
161         da_g_hash_table_get_keys g_hash_table_get_keys; 
162         da_g_hash_table_get_values g_hash_table_get_values; 
163         da_g_hash_table_iter_init g_hash_table_iter_init; 
164         da_g_hash_table_iter_next g_hash_table_iter_next; 
165         da_g_hash_table_iter_get_hash_table g_hash_table_iter_get_hash_table; 
166         da_g_hash_table_iter_remove g_hash_table_iter_remove; 
167         da_g_hash_table_iter_replace g_hash_table_iter_replace; 
168         da_g_hash_table_iter_steal g_hash_table_iter_steal; 
169         da_g_hash_table_ref g_hash_table_ref; 
170         da_g_hash_table_unref g_hash_table_unref; 
171         da_g_str_equal g_str_equal; 
172         da_g_str_hash g_str_hash; 
173         da_g_int_equal g_int_equal; 
174         da_g_int_hash g_int_hash; 
175         da_g_int64_equal g_int64_equal; 
176         da_g_int64_hash g_int64_hash; 
177         da_g_double_equal g_double_equal; 
178         da_g_double_hash g_double_hash; 
179         da_g_direct_hash g_direct_hash; 
180         da_g_direct_equal g_direct_equal; 
181     }
182 }